﻿/*----------------------------------------------------------------
       // Copyright (C) 2008 安华顺通(北京)科技有限公司
       // 版权所有。 
       //
       // 文件名：SysPropertyGrid.cs
       // 文件功能描述：继承PropertyGrid用于扩展。
       //
       // 
       // 创建标识：杨波
       //
       // 修改标识：杨波20080923
       // 修改描述：将属性值的变化反映到对象树
       //
       // 修改标识：
       // 修改描述：
//----------------------------------------------------------------*/

#region UsingStatements

using System;
using System.Windows.Forms;


#endregion

namespace RuleCode.ObjectTree
{
    public class SysPropertyGrid : PropertyGrid
    {
        public SysPropertyGrid()
        {
            ShowEventsButton(true);

            Init();
        }

        private void Init()
        {
            PropertySort = PropertySort.NoSort;
            ToolbarVisible = false;
            VScroll = true;
            HelpVisible = false;

        }

        protected override void OnLostFocus(EventArgs e)
        {
            base.OnLostFocus(e);
        }

        protected override void OnPropertyValueChanged(PropertyValueChangedEventArgs e)
        {
            base.OnPropertyValueChanged(e);
            if (Util.CurrentProperty != null)
                Util.CurrentProperty.ChangedDate = DateTime.Now;
            //将属性值的变化反映到对象树
            if (e.ChangedItem.Label != null)
            {
                //从属性的Name修改Name禁用，对于TableField的重命名太麻烦，所有禁用。
                //if (e.ChangedItem.Label.Equals("DataField") || e.ChangedItem.Label.Equals("Name"))
                if (e.ChangedItem.Label.Equals("DataField"))
                {
                    string name = e.ChangedItem.Value.ToString();
                    Util.SelectedNode.Text = name;
                    Util.changeXmlNodeName(Util.SelectedNode.SysXmlNode, name);

                }
                if (e.ChangedItem.Label.Equals("Label"))
                {
                    (Util.SelectedNode.Property as NameProperty).LabelText =
                       RuleCode.Common.SystemLanguage.Instance.GetLabel(e.ChangedItem.Value.ToString());
                    Util.SelectedNode.Property.SerializeToXML();
                    Util.SelectedNode.Property = null;
                    Util.SetPropertyContent(Util.SelectedNode);

                }

                if (e.ChangedItem.Label.Equals("HelpLabel"))
                {
                    if (Util.SelectedNode.Property != null)
                    {
                        ((HelpTextProperty)Util.SelectedNode.Property).HelpText =
                            RuleCode.Common.SystemLanguage.Instance.GetLabel(e.ChangedItem.Value.ToString());
                        Util.SelectedNode.Property.SerializeToXML();
                        Util.SelectedNode.Property = null;
                    }
                    Util.SetPropertyContent(Util.SelectedNode);



                }
                if (this.SelectedObject.GetType().Equals(typeof(EDTRelationProperty)) && e.ChangedItem.Label.Equals("Table"))
                {
                    (Util.SelectedNode.Property as EDTRelationProperty).QueryType = e.ChangedItem.Value + "_Query";
                    Util.SelectedNode.Property.SerializeToXML();
                    Util.SelectedNode.Property = null;
                    Util.SetPropertyContent(Util.SelectedNode);
                }

            }

        }

        protected override void OnSelectedObjectsChanged(EventArgs e)
        {
            base.OnSelectedObjectsChanged(e);


            //((BaseProperty)this.SelectedObject).SerializeToXML();
            //this.
        }

        protected override void OnSelectedGridItemChanged(SelectedGridItemChangedEventArgs e)
        {
            base.OnSelectedGridItemChanged(e);
            //Util.MdiParent.toolStripStatusLabel1.Text = e.NewSelection.PropertyDescriptor.Description;
        }
    }
}